diff --git a/cpu/mpc86xx/cpu.c b/cpu/mpc86xx/cpu.c
index 36da777..5c6c2ee 100644
--- a/cpu/mpc86xx/cpu.c
+++ b/cpu/mpc86xx/cpu.c
@@ -169,7 +169,7 @@
 
 int set_px_sysclk(ulong sysclk)
 {
-         u8 sysclk_s, sysclk_r, sysclk_v, vclkh, vclkl, sysclk_aux,tmp;
+         u8 sysclk_s, sysclk_r, sysclk_v, vclkh, vclkl, sysclk_aux;
 
          /* Per table 27, page 58 of MPC8641HPCN spec*/
          switch(sysclk)
@@ -354,6 +354,24 @@
          out8(PIXIS_BASE+PIXIS_VCTL,tmp);
 }
 
+int disable_watchdog(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
+{
+	u8 tmp;
+	tmp = in8(PIXIS_BASE+PIXIS_VCTL);
+	tmp = tmp & 0x1E;
+	out8(PIXIS_BASE+PIXIS_VCTL,tmp);
+	tmp = in8(PIXIS_BASE + PIXIS_VCTL);
+	tmp &= ~ 0x08; /* setting VCTL[WDEN] to 0 to disable watch dog */
+	out8(PIXIS_BASE + PIXIS_VCTL, tmp);
+	return 0;
+}
+
+U_BOOT_CMD(
+	diswd, 1, 0, disable_watchdog,
+	"diswd	- Disable watchdog timer \n",
+	NULL
+);
+
 /* This function takes the non-integral cpu:mpx pll ratio
  * and converts it to an integer that can be used to assign
  * FPGA register values.
@@ -509,18 +527,27 @@
 					goto my_usage;
 
 				while(1); /* Not reached */
-			} else {
-				/* Reset from next bank without changing frequencies */
+			} else if(argv[2][1] == 'd'){
+				/* Reset from next bank without changing frequencies but with watchdog timer enabled */
 				read_from_px_regs(0);
 				read_from_px_regs_altbank(0);
-				if(argc > 2)
-					goto my_usage;
 				printf("Setting registers VCFGEN1, VBOOT, and VCTL\n");
 				set_altbank();
 				read_from_px_regs_altbank(1);
 				printf("Enabling watchdog timer on the FPGA and resetting board to boot from the other bank....\n");
 				set_px_go_with_watchdog();
 				while(1); /* Not reached */
+			} else {
+				/* Reset from next bank without changing frequency and without watchdog timer enabled */
+				read_from_px_regs(0);
+				read_from_px_regs_altbank(0);
+				if(argc > 2)
+					goto my_usage;
+				printf("Setting registers VCFGNE1, VBOOT, and VCTL\n");
+				set_altbank();
+				read_from_px_regs_altbank(1);
+				printf("Resetting board to boot from the other bank....\n");
+				set_px_go();
 			}
 
 		default:
